import http from "@/common/http/index.js";

/*
 * 获取文章主题
 * 返回值： [{subject_id: int, name: '' }, ...]
 */
function getSubject() {
  return http.get("/article/subject");
}

/*
 * 获取文章列表
 * state:        必要, 0：已发布; 1：未发布, 草稿箱
 * subject_id：  非必要, 主题id
 * 返回值：[] 文章记录数组, 包含点赞数、收藏数, 不包含文章内容
 */
function getList(state, subject_id) {
  let params = { state: parseInt(state) };
  if (subject_id != null) params.subject_id = parseInt(subject_id);
  return http.get("/article/list", params);
}

/*
 * 获取当前登录用户发布的文章列表
 * state:        必要, 0：已发布; 1：未发布, 草稿箱
 * subject_id：  非必要, 主题id
 * 返回值：[] 文章记录数组, 包含点赞数、收藏数, 不包含文章内容
 */
function getListByUser(state, subject_id) {
  let params = { state: parseInt(state) };
  if (subject_id != null) params.subject_id = parseInt(subject_id);
  return http.get("/article/user-list", params);
}

/*
 * 获取当前登录用户收藏的文章列表
 * 返回值：[] 文章记录数组, 包含点赞数、收藏数, 不包含文章内容
 */
function getListByCollect() {
  return http.get("/article/user-collect");
}

/*
 * 获取文章详细内容，浏览量 + 1
 * 参数：article_id
 * 返回值： {} 文章记录对象，包含点赞数、收藏数、文章内容
 */
function getDetail(article_id) {
  let params = { article_id: article_id };
  return http.get("/article/content", params);
}

/*
 * 保存文章
 * title：     必要, 标题
 * content:    必要, 内容
 * abstract：  发布文章时必要, 保存为草稿时非必要; 摘要
 * state:      必要, 0：已发布; 1：未发布, 草稿箱
 * cover:      非必要, 封面图片文件
 * subject_id: 非必要, 主题id
 */
function saveArticle(params) {
  return http.upload("/article/save", params);
}

/*
 * 修改文章
 * article_id: 必要, 文章id
 * title：     必要, 标题
 * content:    必要, 内容
 * abstract：  发布文章时必要, 保存为草稿时非必要; 摘要
 * state:      必要, 0：已发布; 1：未发布, 草稿箱
 * cover:      非必要, 封面图片文件
 * subject_id: 非必要, 主题id
 */
function updateArticle(params) {
  return http.upload("/article/update", params);
}

/*
 * 删除文章
 * article_id: 待删除文章id
 */
function deleteArticle(article_id) {
  let params = { article_id: article_id };
  return http.delete("/article/delete", params);
}

export default {
  getSubject,
  getList,
  getListByUser,
  getListByCollect,
  getDetail,
  saveArticle,
  updateArticle,
  deleteArticle,
};
